88942c7e7477d1d873b7848351a71c3caf0b8cd3,plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/expressions/arithmetic/PathExpression.java,PathExpression,pathElementParse,#PsiBuilder#PsiBuilder.Marker#GroovyParser#GroovyElementType#,75
Before Change
else {
PsiBuilder.Marker newMarker = marker.precede();
marker.done(PATH_METHOD_CALL);
pathElementParse(builder, newMarker, parser, qualifierType);
}
}
else if (mLCURLY.equals(builder.getTokenType())) {
appendedBlockParse(builder, parser);
if (mLCURLY.equals(builder.getTokenType())) {
pathElementParse(builder, marker, parser, qualifierType);
}
else {
PsiBuilder.Marker newMarker = marker.precede();
marker.done(PATH_METHOD_CALL);
pathElementParse(builder, newMarker, parser, PATH_METHOD_CALL);
}
}
else if (mLBRACK.equals(builder.getTokenType()) &&
!ParserUtils.lookAhead(builder, mLBRACK, mCOLON) &&
!ParserUtils.lookAhead(builder, mLBRACK, mNLS, mCOLON)) {
indexPropertyArgsParse(builder, parser);
PsiBuilder.Marker newMarker = marker.precede();
marker.done(PATH_INDEX_PROPERTY);
if (mLCURLY.equals(builder.getTokenType())) {
PsiBuilder.Marker argsMarker = builder.mark();
argsMarker.done(ARGUMENTS);
}
pathElementParse(builder, newMarker, parser, PATH_INDEX_PROPERTY);
}
else {
marker.drop();
After Change
private static final TokenSet DOTS = TokenSet.create(mSPREAD_DOT, mOPTIONAL_DOT, mMEMBER_POINTER, mDOT);
private static Result pathElementParse(PsiBuilder builder,
PsiBuilder.Marker marker,
GroovyParser parser,
GroovyElementType qualifierType,
Result result) {
GroovyElementType res;
// Property reference
if (DOTS.contains(builder.getTokenType()) || ParserUtils.lookAhead(builder, mNLS, mDOT)) {
if (ParserUtils.lookAhead(builder, mNLS, mDOT)) {
ParserUtils.getToken(builder, mNLS);
}
ParserUtils.getToken(builder, DOTS);
ParserUtils.getToken(builder, mNLS);
TypeArguments.parse(builder);
if (kNEW.equals(builder.getTokenType())) {
res = PrimaryExpression.newExprParse(builder, parser, marker);
}
else if (kTHIS.equals(builder.getTokenType()) || kSUPER.equals(builder.getTokenType())) {
res = parseThisSuperExpression(builder, qualifierType);
}
else {
res = namePartParse(builder, parser);
}
if (!res.equals(WRONGWAY)) {
PsiBuilder.Marker newMarker = marker.precede();
marker.done(res);
if (mLCURLY.equals(builder.getTokenType())) {
PsiBuilder.Marker argsMarker = builder.mark();
argsMarker.done(ARGUMENTS);
}
result = pathElementParse(builder, newMarker, parser, res, OK);
}
else {
builder.error(GroovyBundle.message("path.selector.expected"));
marker.drop();
}
}
else if (mLPAREN.equals(builder.getTokenType())) {
PrimaryExpression.methodCallArgsParse(builder, parser);
if (mLCURLY.equals(builder.getTokenType()) || ParserUtils.lookAhead(builder, mNLS, mLCURLY)) {
ParserUtils.getToken(builder, mNLS);
result = pathElementParse(builder, marker, parser, qualifierType, OK);
}
else {
PsiBuilder.Marker newMarker = marker.precede();
marker.done(PATH_METHOD_CALL);
result = pathElementParse(builder, newMarker, parser, qualifierType, OK);
}
}
else if (mLCURLY.equals(builder.getTokenType())) {
appendedBlockParse(builder, parser);
if (mLCURLY.equals(builder.getTokenType())) {
result = pathElementParse(builder, marker, parser, qualifierType, result);
}
else {
PsiBuilder.Marker newMarker = marker.precede();
marker.done(PATH_METHOD_CALL);
result = pathElementParse(builder, newMarker, parser, PATH_METHOD_CALL, result);
}
}
else if (checkForArrayAccess(builder)) {
indexPropertyArgsParse(builder, parser);
PsiBuilder.Marker newMarker = marker.precede();
marker.done(PATH_INDEX_PROPERTY);
final boolean lCurly = mLCURLY.equals(builder.getTokenType());
if (lCurly) {
PsiBuilder.Marker argsMarker = builder.mark();
argsMarker.done(ARGUMENTS);
}
result = pathElementParse(builder, newMarker, parser, PATH_INDEX_PROPERTY, lCurly?CALL_WITH_CLOSURE : OK);
}
else {
marker.drop();